import java.util.List;

public class Test2_21 {



    public ListNode reverseBetween(ListNode head, int left, int right) {

        int  i=1;
        ListNode p =head;

        ListNode l1=new ListNode(-501);  // 前一个节点
        ListNode  l2=new ListNode(-501);  //后一个节点
        ListNode  l3=new ListNode(-501);

        while (p!=null){
            if (i==left-1){
                l1=p;
                l3=p.next;
            }
            if (i==right+1){
                l2=p;
            }
            p=p.next;
            i++;
        }

        ListNode cur=l3;
        ListNode pre=l1;
        ListNode next;
        int i1=right-left+1;

        while (cur!=null&&i1>0){
            next=cur.next;
            cur.next=pre;
            pre=cur;
            cur=next;
            i1--;
        }
        l3.next=l2;







        return   head;

    }
}
